Related articles

*   [Network configuration](/index.php/Network_configuration "Network configuration")
*   [Wireless network configuration](/index.php/Wireless_network_configuration "Wireless network configuration")
*   [Software access point](/index.php/Software_access_point "Software access point")
*   [Internet sharing](/index.php/Internet_sharing "Internet sharing")

An IBSS (Independent Basic Service Set) network, often called an ad-hoc network, is a way to have a group of devices talk to each other wirelessly, without a central controller. It is an example of a peer-to-peer network, in which all devices talk directly to each other, with no inherent relaying.

For example, ad-hoc networking may be used to [share an internet connection](/index.php/Internet_sharing "Internet sharing").

## Contents

*   [1 Requirements](#Requirements)
*   [2 Wifi link layer](#Wifi_link_layer)
    *   [2.1 Manual method](#Manual_method)
    *   [2.2 WPA supplicant](#WPA_supplicant)
*   [3 Network configuration](#Network_configuration)
*   [4 Tips and tricks](#Tips_and_tricks)
    *   [4.1 Using NetworkManager](#Using_NetworkManager)
    *   [4.2 Custom systemd service (with wpa_supplicant and static IP)](#Custom_systemd_service_.28with_wpa_supplicant_and_static_IP.29)
*   [5 See also](#See_also)

## Requirements

*   A [nl80211 compatible](https://wireless.wiki.kernel.org/en/users/drivers%7C) wireless device (e.g. ath9k) on all devices which will connect to the network

## Wifi link layer

Since IBSS network is a peer-to-peer network, the steps necessary to set up the wifi link layer should be the same on all devices.

**Tip:** It is possible to create complex network topologies, see [Linux Wireless documentation](http://wireless.kernel.org/en/users/Documentation/iw/vif) for advanced examples.

### Manual method

**Warning:** This method creates **unencrypted** ad-hoc network. See [#WPA supplicant](#WPA_supplicant) for method using WPA encryption.

See [Wireless network configuration#Manual setup](/index.php/Wireless_network_configuration#Manual_setup "Wireless network configuration") for a better explanation of the following commands. Make sure that [iw](https://www.archlinux.org/packages/?name=iw) is [installed](/index.php/Pacman "Pacman").

Set the operation mode to ibss:

```
# iw *interface* set type ibss

```

Bring the interface up (an additional step like `rfkill unblock wifi` might be needed):

```
# ip link set *interface* up

```

Now you can create an ad-hoc network. Replace *your_ssid* with the name of the network and *frequency* with the frequency in MHz, depending on which channel you want to use. See the Wikipedia page [List of WLAN channels](https://en.wikipedia.org/wiki/List_of_WLAN_channels#Interference_Concerns "wikipedia:List of WLAN channels") for a table showing frequencies of individual channels.

```
# iw *interface* ibss join *your_ssid* *frequency*

```

### WPA supplicant

Ensure that [wpa_supplicant](https://www.archlinux.org/packages/?name=wpa_supplicant) is [installed](/index.php/Pacman "Pacman"), and create a configuration file for it (see [WPA supplicant](/index.php/WPA_supplicant "WPA supplicant") for details).

 `/etc/wpa_supplicant-adhoc.conf` 
```
ctrl_interface=DIR=/run/wpa_supplicant GROUP=wheel

# use 'ap_scan=2' on all devices connected to the network
# this is unnecessary if you only want the network to be created when no other networks are available
ap_scan=2

network={
    ssid="MySSID"
    mode=1
    frequency=2432
    proto=RSN
    key_mgmt=WPA-PSK
    pairwise=CCMP
    group=CCMP
    psk="secret passphrase"
}

```

Run *wpa_supplicant* on all devices connected to the network with the following command:

```
# wpa_supplicant -B -i *interface* -c /etc/wpa_supplicant-adhoc.conf -D nl80211,wext

```

## Network configuration

The final step is to assign an IP address to all devices in the network. There are multiple ways to do this:

*   Assign static IP addresses. See [Network configuration#Static IP address](/index.php/Network_configuration#Static_IP_address "Network configuration") for details.
*   Running DHCP server on one device. See [dhcpd](/index.php/Dhcpd "Dhcpd") or [dnsmasq](/index.php/Dnsmasq "Dnsmasq") for details.
*   Running *avahi-autoipd*. See [Avahi#Obtaining IPv4LL IP address](/index.php/Avahi#Obtaining_IPv4LL_IP_address "Avahi") for details.

If you want to share an internet connection to the ad-hoc network, see [Internet sharing](/index.php/Internet_sharing "Internet sharing").

## Tips and tricks

### Using NetworkManager

If you use [NetworkManager](/index.php/NetworkManager "NetworkManager"), you can use *nm-applet* for ad-hoc network configuration instead of the manual method described above. See [NetworkManager#Ad-hoc](/index.php/NetworkManager#Ad-hoc "NetworkManager") for details.

**Note:** NetworkManager does not support WPA encryption in ad-hoc mode.

### Custom systemd service (with wpa_supplicant and static IP)

You can use the following templates to enable wireless ad-hoc networking:

 `/etc/conf.d/network-wireless-adhoc@<interface>` 
```
addr=192.168.0.2
mask=24

```
 `/etc/systemd/system/network-wireless-adhoc@.service` 
```
[Unit]
Description=Ad-hoc wireless network connectivity (%i)
Wants=network.target
Before=network.target
BindsTo=sys-subsystem-net-devices-%i.device
After=sys-subsystem-net-devices-%i.device

[Service]
Type=oneshot
RemainAfterExit=yes
EnvironmentFile=/etc/conf.d/network-wireless-adhoc@%i

# perhaps rfkill is not needed for you
ExecStart=/usr/bin/rfkill unblock wifi
ExecStart=/usr/bin/ip link set %i up
ExecStart=/usr/bin/wpa_supplicant -B -i %i -D nl80211,wext -c /etc/wpa_supplicant-adhoc.conf
ExecStart=/usr/bin/ip addr add ${addr}/${mask} dev %i

ExecStop=/usr/bin/ip addr flush dev %i
ExecStop=/usr/bin/ip link set %i down

[Install]
WantedBy=multi-user.target

```

## See also

*   [Ubuntu community wiki WifiDocs/Adhoc](https://help.ubuntu.com/community/WifiDocs/Adhoc)
*   [Manual about creating an Ad-Hoc network on UbuntuGeek](http://www.ubuntugeek.com/creating-an-adhoc-host-with-ubuntu.html)
*   [Share your 3G Internet connection over wifi](http://go2linux.garron.me/linux/2011/03/share-your-3g-internet-connection-over-wifi-linux-ipod-touch-925)